// 解答疑问：const y: string = "1";
//          const y1: String = "1";  在ts中他们的区别是什么
// 类型本质有别
// string（小写）：它属于 TypeScript 的基础类型，代表的是字符串字面量。就像 "hello"、'world' 这类都属于字符串字面量。
// String（大写）：这是 JavaScript 里的包装对象类型，指的是 String 构造函数所创建的对象。例如 new String("1") 就会生成一个 String 对象。

//  比较项	        string（小写）	                                            String（大写）
// 类型范畴	        基础类型	                                                对象类型
// 赋值情形	        能直接赋予字符串字面量，像 "1" 这种。	                      要通过 new String() 来创建对象后才能赋值，直接赋予字面量会引发类型错误。
// 实际运用	        日常开发中，字符串类型的声明都推荐使用它。	                   极少会用到，只有在需要访问 String.prototype 上的方法或者属性时才会考虑，不过这种情况很罕见。

// 正确：string 类型可以直接赋值字符串字面量
const y: string = "1";

// 错误：String 类型不能直接赋值字符串字面量
// const y1: String = "1"; // 编译错误：不能将类型 'string' 分配给类型 'String'

// 正确：必须通过 new String() 创建对象
const y2: String = new String("1");

// 自动装箱：string 类型调用方法时会临时转换为 String 对象
console.log(y.toUpperCase()); // 输出 "1"

// 注意：String 对象与字符串字面量在比较时有差异
console.log(y2 === "1"); // 输出 false（对象与字面量不相等）
console.log(y2.toString() === "1"); // 输出 true（转换为字面量后相等）
